package com.yzq.api.aliyunai.enums;

import lombok.Getter;

/**
 * 图像编辑功能枚举类
 * 包含当前支持的所有图像编辑功能及简要说明
 */
@Getter
public enum ImageEditFunction {

    /**
     * 全局风格化，当前支持2种风格
     */
    STYLIZATION_ALL("stylization_all", "全局风格化，当前支持2种风格"),

    /**
     * 局部风格化，当前支持8种风格
     */
    STYLIZATION_LOCAL("stylization_local", "局部风格化，当前支持8种风格"),

    /**
     * 指令编辑，通过指令即可编辑图像，简单编辑任务优先推荐
     */
    DESCRIPTION_EDIT("description_edit", "指令编辑。通过指令即可编辑图像，简单编辑任务优先推荐这种方式"),
    /**
     * 去文字水印功能
     */
    REMOVE_WATERMARK("remove_watermark", "去文字水印"),

    /**
     * 扩图功能
     */
    EXPAND("expand", "扩图"),

    /**
     * 图像超分功能
     */
    SUPER_RESOLUTION("super_resolution", "图像超分"),

    /**
     * 图像上色功能
     */
    COLORIZATION("colorization", "图像上色"),

    /**
     * 线稿生图功能
     */
    DOODLE("doodle", "线稿生图"),

    /**
     * 参考卡通形象生图功能
     */
    CONTROL_CARTOON_FEATURE("control_cartoon_feature", "参考卡通形象生图");

    /**
     * -- GETTER --
     *  获取功能名称
     *
     * @return 功能名称字符串
     */
    private final String functionName;
    /**
     * -- GETTER --
     *  获取功能描述
     *
     * @return 功能描述字符串
     */
    private final String description;

    /**
     * 构造方法
     * @param functionName 功能名称（对应原始字符串）
     * @param description 功能描述
     */
    ImageEditFunction(String functionName, String description) {
        this.functionName = functionName;
        this.description = description;
    }

    // 获取功能名称
    public static String getByFunctionName(ImageEditFunction functionName) {
        for (ImageEditFunction value : ImageEditFunction.values()) {
            if (value.functionName.equals(functionName.functionName)) {
                return value.getFunctionName();
            }
        }
        return null;
    }


}
